package com.qfedu.yige.common;

import java.math.BigDecimal;

public class Utils {
    private static final double NEAR_DISTANCE = 2000000; // 单位：m
    private static final double EARTH_RADIUS = 6371393; // 平均半径,单位：m

    public static double getDistance(double x, double y,double xx, double yy) {

        // 经纬度（角度）转弧度。弧度用作参数，以调用Math.cos和Math.sin
        double radiansAX = x; // A经弧度
        double radiansAY = y; // A纬弧度
        double radiansBX = xx; // B经弧度
        double radiansBY = yy; // B纬弧度

        // 公式中“cosβ1cosβ2cos（α1-α2）+sinβ1sinβ2”的部分，得到∠AOB的cos值
        double cos = Math.cos(radiansAY) * Math.cos(radiansBY) * Math.cos(radiansAX - radiansBX)
                + Math.sin(radiansAY) * Math.sin(radiansBY);
//        System.out.println("cos = " + cos); // 值域[-1,1]
        double acos = Math.acos(cos); // 反余弦值
//        System.out.println("acos = " + acos); // 值域[0,π]
//        System.out.println("∠AOB = " + Math.toDegrees(acos)); // 球心角 值域[0,180]
        return new BigDecimal(EARTH_RADIUS * acos/1000).setScale(2,BigDecimal.ROUND_HALF_DOWN).doubleValue(); // 最终结果
    }
    public static double  getNEAR_DISTANCE() {
        return NEAR_DISTANCE;
    }
}
